package com.cskaoyan.javase.basic._4operator;

/**
 * 三目（ternary）运算符，也被称之为三元运算符，即指的是需要三个操作数的运算符。
 * 它的语法是：
 * (条件表达式) ? 表达式1 : 表达式2;
 * 条件表达式指的是结果是布尔类型的表达式
 *
 * 它具有以下特点：
 * 当条件表达式为true时，执行表达式1，否则执行表达式2。
 * 如果xxx,就执行表达式1,否者就执行表达式2
 * 它其实就对应if中的,if双分支写法——if...else
 *
 * 三目运算符 vs if..else
 * 三目运算符的最大特点就是，它一定会执行一个表达式， 所以它一定会有一个结果。
 * 正是由于它必须执行表达式。而语句不能放在表达式的位置，这极大的限制了三目运算符的使用。
 *
 * if...else从使用效果上来说，是可以完全替代三目运算符的。
 * 但是使用三目运算符，代码更加简洁、更加优雅并且逻辑更加直观，实测三目运算符的运算效率要比if稍微高一点。所以，如果能够使用三目运算符尽量使用它，而不是if。(当然这种场景在实际开发中并不经常遇到,if...else仍然是更常见的选择)
 *
 * @since 10:16
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        // 给出两个int整数，求两个数的最大值
        int num1 = 1000;
        int num2 = 200;
        int max = (num1 > num2) ? num1 : num2;
        System.out.println(max);

        int result;
        if (num1 > num2) {
            result = num1;
        } else {
            result = num2;
        }
        System.out.println(result);

        // 求两个数的最大值,但是要求直接控制台输出最大值
        if (num1 > num2) {
            System.out.println("最大值是:" + num1);
        } else {
            System.out.println("最大值是:" + num2);
        }

        int a = 10;
        int b = 20;
        int c = 30;
        int max2 = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
    }
}
